import request from "../../../utils/request"
Page({
  /**
   * 页面的初始数据
   */
  data: {
    showDialog: false, // 取消预约弹窗显示状态
    currentAppointmentId: null, // 当前操作的预约ID
    activeTab: 0, // 当前激活的标签页索引（0-全部，1-待上门，2-已完成，3-已取消，4-已过期）
    // 所有预约数据（实际项目中可从接口获取）
    appointmentList: [], //已经删除
    filteredAppointments: [], // 筛选后的预约数据（用于渲染当前标签页）
    showDialogCancel: false,
  },
  getList() {
    const userInfo = wx.getStorageSync('loginUserInfo');
    const that = this;
    that.setData({
      currentUser: userInfo
    });
    console.log("查询的wxUserId: " + userInfo.userId);
    // 2. 调用预约列表接口
    request({
      url: '/commanage/yuyue/list/wxuser',
      method: 'GET',
      data: {
        wxUserId: userInfo.userId, // 传递 wxUserId 参数
      },
      loadingText: '加载我的预约...',
      errorText: '加载预约失败'
    }).then(res => {
      console.log("后端原始数据:", res.data.rows);
      if (res.data.code === 200) {
        const originalList = res.data.rows || [];
        // 3. 格式化数据
        const formattedList = originalList.map(item => {
          // 处理日期时间
          const timeStr = item.appointmentTime || '';
          const date = timeStr.substring(0, 10).replace(/-/g, '.');
          const time = timeStr.substring(11, 16);
          // 状态码转文本
          const status = item.status;
          // 手机号脱敏
          let phone = item.phone || '';
          phone = phone.substring(0, 3) + '****' + phone.substring(7);
          return {
            id: item.id,
            date: date,
            time: time,
            type: item.appointmentType, // 假设服务类型字段
            phone: phone,
            status: status,
            name: item.applicantName || '', // 假设申请人名字字段
            familyName: item.elderlyName || item.extraField1 || '' || '无' // 假设家属名字字段
          };
        });
        // 4. 更新页面数据
        that.setData({
          appointmentList: formattedList,
          filteredAppointments: formattedList
        });
        // 空数据提示
        if (formattedList.length === 0) {
          wx.showToast({
            title: '您暂无预约记录',
            icon: 'none'
          });
        }
      } else {
        wx.showToast({
          title: res.data.msg || '查询失败',
          icon: 'none'
        });
      }
    });
  },

  // 知道了关闭弹框
  CancellimitConfirm() {
    this.setData({
      showDialogCancel: false
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.getList()
  },

  /**
   * 标签页切换事件：筛选对应状态的预约数据
   */
  onTabChange(e) {
    const activeTab = e.detail.index; // 当前激活的标签索引
    // 标签索引与状态的映射关系
    const statusMap = ['', '待上门', '已完成', '已取消', '已过期'];
    const currentStatus = statusMap[activeTab];

    // 筛选逻辑：全部标签显示所有数据，其他标签按状态筛选
    let filteredData = [];
    if (currentStatus === '') {
      filteredData = this.data.appointmentList;
    } else {
      filteredData = this.data.appointmentList.filter(item => item.status === currentStatus);
    }

    // 更新页面数据
    this.setData({
      activeTab: activeTab,
      filteredAppointments: filteredData
    });
  },

  /**
   * 显示取消预约弹窗
   */
  showCancelDialog(e) {
    const appointmentId = e.currentTarget.dataset.id; // 获取当前预约ID
    console.log(e.currentTarget.dataset.id);
    this.setData({
      showDialog: true,
      currentAppointmentId: appointmentId
    });
  },

  /**
   * 关闭取消预约弹窗
   */
  onCloseDialog() {
    this.setData({
      showDialog: false,
      currentAppointmentId: null // 重置当前预约ID
    });
  },

  /**
   * 确认取消预约：更新预约状态并刷新页面
   */
 /**
 * 确认取消预约：更新预约状态并刷新页面
 */
handleConfirmCancel() {
  const id = this.data.currentAppointmentId
  const userInfo = wx.getStorageSync('loginUserInfo');
  const that = this;
  
  // 调用接口查看当前用户当日预约为"已取消"的次数
  request({
    url: '/commanage/yuyue/count/canceled/' + userInfo.userId,
    method: 'GET',
    success: (res) => {
      console.log("今天已取消次数：", res.data.data);
      if (res.data.code === 200 && res.data.data > 2) {
        that.onCloseDialog(); // 关闭弹框
        that.setData({
          showDialogCancel: true
        })
        return; // 终止方法
      }
      
      // 如果小于3则继续，调用接口更改预约状态
      request({
        url: '/commanage/yuyue',
        method: 'PUT',
        data: {
          id: id,
          status: "已取消",
        },
        loadingText: '正在取消预约...',
        errorText: '取消预约失败',
        success: (putRes) => {
          // PUT 请求成功后，再执行后续的刷新操作
          console.log("取消预约成功：", putRes);
          
          // 1. 更新页面数据
          that.getList();
          
          // 2. 重新筛选当前标签页数据（确保取消后列表实时更新）
          that.onTabChange({
            detail: {
              index: that.data.activeTab
            }
          });
          
          // 3. 提示用户并关闭弹窗
          wx.showToast({
            title: '取消预约成功',
            icon: 'success',
            duration: 1500
          });
          
          that.onCloseDialog();
        }
      });
    }
  })
},



  /**
   * 返回上一页
   */
  toMy() {
    wx.navigateBack();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {},

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {},

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {},

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {},

  /**
   * 页面下拉刷新事件
   */
  onPullDownRefresh() {
    // 实际项目中可在此重新请求接口获取最新预约数据
    wx.stopPullDownRefresh(); // 停止下拉刷新动画
  },

  /**
   * 页面上拉触底事件
   */
  onReachBottom() {},

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {}
});